(function($) {
	$.fn.gTabs = function(opts) {
		var def = {
			btnID:".j-gTbtn",/* 按钮的父级id */
			boxID:".j-gTbox",/* 内容的父级id */
			bind: "hover",	/* 事件类型 可选参数 "click" */
			hdelay: 300,	/* tab延迟速度 */
			speed:400,		/* 滚动速度 */
			animated: 0, 	/* 动画效果 可选参数 "up" "left" "fadein" */
			auto:0			/* 自动滚动的时间(毫秒) 0为不自动滚动 */
		};
		var opts = $.extend(def, opts),
			evt = opts.bind,
			autospeed = opts.auto,
			anim = opts.animated,
			btn = this.find(opts.btnID),	
			box = this.find(opts.boxID),	
			boxheight = box.children().height(),
			boxwidth = box.children().width(),
			n = 0,timer,gTtimer;
		return this.each(function(i) {
		if(autospeed!=0){box.eq(i).children().eq(0).clone().appendTo(box.eq(i));};

			if(evt == "hover") {
				btn.eq(i).children().hover(function() {
					var k = $(this).index(),
					    h = k * boxheight,
						w = k * boxwidth;
					gTway = function() {
						btn.eq(i).children().removeClass("cur").eq(k).addClass("cur");
						switch(anim) {
							case "up":box.eq(i).animate({"top": -h + "px"}, opts.speed); break;
							case "left":box.eq(i).animate({"left": -w + "px"}, opts.speed); break;
							case 0: box.eq(i).children().hide().eq(k).show(); break;
							case "fadein": box.eq(i).children().hide().eq(k).fadeIn();break;
						};
					};
					gTtimer = setTimeout(gTway, opts.hdelay);
					return false;
				}, function() {
					clearTimeout(gTtimer);
				});
			} else {
				btn.eq(i).children().bind(evt, function() {
					var k = $(this).index(),
					    h = k * boxheight,
						w = k * boxwidth;
					btn.eq(i).children().removeClass("cur").eq(k).addClass("cur");
					switch(anim) {
							case "up":box.eq(i).animate({"top": -h + "px"}, opts.speed); break;
							case "left":box.eq(i).animate({"left": -w + "px"}, opts.speed); break;
							case 0: box.eq(i).children().hide().eq(k).show(); break;
							case "fadein": box.eq(i).children().hide().eq(k).fadeIn();break;
						};
					return false;
				});
			};
			function autoroll() {
				 var total = btn.eq(i).children().length;
				if(n >= total+1) {
					btn.eq(i).children().removeClass("cur").eq(0).addClass("cur") ;
					box.eq(i).stop(true,false).css({left:"0px",top:"0px"});
					n = 1;
				};
				var h = n * boxheight,
					w = n * boxwidth;
				btn.eq(i).children().removeClass("cur").eq(n).addClass("cur");
				switch(anim) {
							case "up":box.eq(i).stop(true,false).animate({"top":-h+"px"},opts.speed); break;
							case "left":box.eq(i).stop(true,false).animate({"left":-w+"px"},opts.speed);; break;
							case 0: box.eq(i).stop(true,false).children().hide().eq(n).show(); break;
							case "fadein": box.eq(i).stop(true,false).children().hide().eq(n).fadeIn();break;
						};
				if(n >= total){btn.eq(i).children().removeClass("cur").eq(0).addClass("cur"); };
				n++;
					timer = setTimeout(autoroll, autospeed);
					};
			function stoproll() {
				box.eq(i).children().hover(function() {
					clearTimeout(timer);
					n = $(this).prevAll().length+1;
				}
				, function() {
					timer = setTimeout(autoroll, autospeed);
				});
				btn.eq(i).children().hover(function() {
					clearTimeout(timer);
					n = $(this).prevAll().length+1;
				}
				, function() {
					timer = setTimeout(autoroll, autospeed);
				});
			};
			if(autospeed!=0){autoroll(); stoproll();}});
	};
})(jQuery);